/*
 * @lc app=leetcode.cn id=860 lang=cpp
 *
 * [860] 柠檬水找零
 */

// @lc code=start
class Solution
{
public:
    bool lemonadeChange(vector<int> &bills)
    {
        //这道题说实话不太像贪心
        //策略就是维护5 10 如果5直接收入 10找5 20优先找10和5 否则给3个5
        int rmb5 = 0;  //5元数量
        int rmb10 = 0; //10元数量
        for (int i = 0; i < bills.size(); i++)
        {
            if (bills[i] == 5)
            {
                rmb5++;
            }
            else if (bills[i] == 10)
            {
                if (rmb5 > 0)
                {
                    rmb5--;
                    rmb10++;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                if (rmb10 > 0 && rmb5 > 0)
                {
                    rmb10--;
                    rmb5--;
                }
                else if (rmb5 > 2)
                {
                    rmb5 = rmb5 - 3;
                }
                else
                {
                    return false;
                }
            }
        }
        return true;
    }
};
// @lc code=end
